Technical Field
This invention relates to computing systems, and more particularly, to techniques for processing control transfer instructions.
Description of the Related Art
Computing systems include multiple multi-threaded processors each of which may execute multiple software instructions associated with various programs. To achieve improved performance, a multi-threaded processor may execute multiple software instructions in parallel, as well as execute software instructions in a different order than the instructions are arranged in their corresponding program.
The software instructions may include instructions, which can change the program flow. Such software instructions are commonly referred to as control transfer instructions (CTI) and may include instructions that cause the program flow to branch or jump to a different address from which to retrieve subsequent instructions. In some cases, the change in address is specified as an offset from a current value of a program counter (PC).
To maintain performance during program flow changes, processors may speculatively fetch and execute instructions beyond a CTI. Circuitry included in a processor may predict a direction and a target of the CTI. Once the direction and target have been predicted, the processor may begin to fetch instructions from the path predicted following the CTI.